home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / gcc / ixemul_src.lha / ixemul-41.0 / glue / gen_debug_glue.c next >
C/C++ Source or Header  |  1994-07-19  |  932b  |  48 lines

  1. #include <sys/types.h>
  2. #include <sys/syscall.h>
  3.  
  4. #include <stdio.h>
  5.  
  6. struct syscall {
  7.   char *name;
  8.   int   vec;
  9. } syscalls[] = {
  10. #define SYSTEM_CALL(func,vec) #func, vec,
  11. #include <sys/syscall.def>
  12. #undef SYSTEM_CALL
  13. };
  14. int nsyscall = sizeof(syscalls) / sizeof (syscalls[0]);
  15.  
  16. main()
  17. {
  18.   FILE *fp1, *fp2;
  19.   struct syscall *sc;
  20.   int i, v;
  21.  
  22.   for (i = 0, sc = syscalls; i < nsyscall; i++, sc++)
  23.     {
  24.       char name1[strlen (sc->name) + 3];
  25.     
  26.       v = -(sc->vec + 4)*6;
  27.       
  28.       sprintf (name1, "%s.s", sc->name);
  29.  
  30.       fp1 = fopen (name1, "w");
  31.       
  32.       if (!fp1)
  33.         {
  34.           perror (sc->name);
  35.           exit (20);
  36.         }
  37.  
  38.       fprintf (fp1, ".globl _%s; _%s: movel a4@(_ixemulbase:W), a0; "
  39.             "addw #%d,a0; jsr a0@; "
  40.             "tstl a4; bne Ldo_rts; "
  41.             "pea Lsuender; jmp _eeak_a_bug; "
  42.             "Ldo_rts: rts; Lsuender: .asciz \"%s\";.even\n",
  43.              sc->name, sc->name, v, sc->name);
  44.       fclose (fp1);
  45.     }
  46. }
  47.  
  48.